Various types of information can advantageously be provided to users in streaming formats, in which the information is rendered as it is received. For example, television and radio stations typically broadcast signals that are rendered on a CRT and a speaker in real-time, as they are received.
In the computer environment, digital streaming media has become commonplace. Media types such as video and audio can be encoded in compressed formats and sent over network communications media or an airwave communications medium as sequences of streaming media units. In the case of video, the streaming media units correspond to sequential frames of video. In the case of audio, the streaming media units comprise sequential audio samples. Streaming makes it possible for requested time-based content to be viewed nearly immediately, instead of waiting until an entire piece of content is downloaded before initiating its playback.
Regardless of the particular type of media or streaming media format, the user-perceivable information encoded by a streaming media signal is often played or rendered at a speed that is determined by the rate that the media units are received. In some cases, the streaming units contain time-stamps indicating relative times at which they are to be rendered. In the latter case, the source of the streaming data ensures that individual units are sent (and therefore received) at a rate that correlates with the timestamps. For purposes of the following discussion, the rate at which the media units are intended to be rendered will be referred to as the nominal rendering rate. Where timestamps are present, the nominal rendering rate will be determined by the timestamps. In other cases, the nominal rendering rate might be determined in other ways, such as by the rate at which the media units are received.
In many situations, the received streaming media units can be simply played at their nominal rate. In other situations, however, circumstances at the receiver dictate playback at a rendering rate that is different from the nominal rendering rate.
As an example, it might be the case that certain rendering hardware operates at a fixed playback rate, so that media units have to be presented at a frequency that differs from the nominal rendering rate. This might happen, for example, when rendering video frames to a fixed-frequency display. When this is the case, the situation can arise where new frames do not arrive fast enough to satisfy the fixed needs of the rendering hardware. Alternatively, frames might arrive too frequently. A similar situation might arise where time-stamped media units arrive more or less frequently than otherwise dictated by the timestamps.
There are other examples in which a received media stream might need to be rendered at a rendering rate that is different from the nominal rendering rate. One common situation is that of simultaneously receiving and rendering two media streams, such as an audio stream and a video stream that are to be synchronized. Another common situation is the simultaneous reception and rendering of first and second video streams on a common set of hardware-such as on a single CRT. This is sometimes referred to as “picture-in-picture.”Although it might be possible in this situation to vary the refresh rate of the CRT to match the nominal rendering rate of the first video stream, any mismatch between the nominal rendering rates of the first and second video streams will be difficult to resolve. More specifically, the nominal rendering rate of the first video stream will dictate the actual rendering rate, and the nominal rendering rate of the second video stream might not match this actual rendering rate.
Another example arises in the context of video-on-demand systems. In systems such as this, it is advantageous to initiate a broadcast stream of a given media title at periodic, relatively small intervals. For example, a particular movie might be broadcast every five minutes, resulting in a number of different simultaneous streams of the same movie. Each viewer is then forced to watch one of the broadcast versions of the movie. Suppose, however, that a viewer attempts to begin viewing a movie at a point in time that precedes the next “beginning” of the broadcast version of the movie by an intermediate time, such as two minutes. In this case, it might be possible to initiate a dedicated media stream for this one viewer, and to speed the streaming media transmission and playback so that the viewer eventually catches up with one of the broadcast versions of the movie, at which point the dedicated media stream would no longer be needed. In this case, however, the nominal rendering rate might exceed the capabilities of the playback hardware, causing some of the content to be skipped. This would result in annoying anomalies in the rendered media.
Buffering is often used to compensate for short-term mismatches between reception rate and a desired or actual rendering rate. Received media units are inserted into the head of a memory buffer and rendered from the bottom of the memory buffer. If a mismatch persists for a relatively long period, however, the buffer can eventually overflow or be depleted, resulting in a disruption of the media playback.